#ifndef PARAMETERITEM_H
#define PARAMETERITEM_H

#include <QObject>

class ParameterItem : public QObject
{
    Q_OBJECT
    Q_PROPERTY(int id READ id WRITE setId NOTIFY idChanged FINAL)
    Q_PROPERTY(QString Name READ Name WRITE setName NOTIFY NameChanged FINAL)
    Q_PROPERTY(QString Process1 READ Process1 WRITE setProcess1 NOTIFY Process1Changed FINAL)
    Q_PROPERTY(QString Process2 READ Process2 WRITE setProcess2 NOTIFY Process2Changed FINAL)
    Q_PROPERTY(QString F_UpperKnife01Assist READ F_UpperKnife01Assist WRITE setF_UpperKnife01Assist NOTIFY F_UpperKnife01AssistChanged FINAL)
    Q_PROPERTY(QString F_UpperKnife02Assist READ F_UpperKnife02Assist WRITE setF_UpperKnife02Assist NOTIFY F_UpperKnife02AssistChanged FINAL)
    Q_PROPERTY(QString B_UpperKnife01Assist READ B_UpperKnife01Assist WRITE setB_UpperKnife01Assist NOTIFY B_UpperKnife01AssistChanged FINAL)
    Q_PROPERTY(QString B_UpperKnife02Assist READ B_UpperKnife02Assist WRITE setB_UpperKnife02Assist NOTIFY B_UpperKnife02AssistChanged FINAL)
    Q_PROPERTY(QString F_UpperKnife01 READ F_UpperKnife01 WRITE setF_UpperKnife01 NOTIFY F_UpperKnife01Changed FINAL)
    Q_PROPERTY(QString F_UpperKnife02 READ F_UpperKnife02 WRITE setF_UpperKnife02 NOTIFY F_UpperKnife02Changed FINAL)
    Q_PROPERTY(QString B_UpperKnife01 READ B_UpperKnife01 WRITE setB_UpperKnife01 NOTIFY B_UpperKnife01Changed FINAL)
    Q_PROPERTY(QString B_UpperKnife02 READ B_UpperKnife02 WRITE setB_UpperKnife02 NOTIFY B_UpperKnife02Changed FINAL)
    Q_PROPERTY(QString F_LowerKnife01 READ F_LowerKnife01 WRITE setF_LowerKnife01 NOTIFY F_LowerKnife01Changed FINAL)
    Q_PROPERTY(QString F_LowerKnife02 READ F_LowerKnife02 WRITE setF_LowerKnife02 NOTIFY F_LowerKnife02Changed FINAL)
    Q_PROPERTY(QString B_LowerKnife01 READ B_LowerKnife01 WRITE setB_LowerKnife01 NOTIFY B_LowerKnife01Changed FINAL)
    Q_PROPERTY(QString B_LowerKnife02 READ B_LowerKnife02 WRITE setB_LowerKnife02 NOTIFY B_LowerKnife02Changed FINAL)
    Q_PROPERTY(QString Roller READ Roller WRITE setRoller NOTIFY RollerChanged FINAL)

public:
    explicit ParameterItem(QObject *parent = nullptr);
    void clear();
    void copyItem(ParameterItem *item);

    int id() const { return m_id; }
    void setId(int newId);

    QString Name() const { return m_Name; }
    void setName(const QString &newName);

    QString Process1() const { return m_Process1; }
    void setProcess1(const QString &newProcess1);

    QString Process2() const { return m_Process2; }
    void setProcess2(const QString &newProcess2);

    QString F_UpperKnife01Assist() const { return m_F_UpperKnife01Assist; }
    void setF_UpperKnife01Assist(const QString &newVal);

    QString F_UpperKnife02Assist() const { return m_F_UpperKnife02Assist; }
    void setF_UpperKnife02Assist(const QString &newVal);

    QString B_UpperKnife01Assist() const { return m_B_UpperKnife01Assist; }
    void setB_UpperKnife01Assist(const QString &newVal);

    QString B_UpperKnife02Assist() const { return m_B_UpperKnife02Assist; }
    void setB_UpperKnife02Assist(const QString &newVal);

    QString F_UpperKnife01() const { return m_F_UpperKnife01; }
    void setF_UpperKnife01(const QString &newVal);

    QString F_UpperKnife02() const { return m_F_UpperKnife02; }
    void setF_UpperKnife02(const QString &newVal);

    QString B_UpperKnife01() const { return m_B_UpperKnife01; }
    void setB_UpperKnife01(const QString &newVal);

    QString B_UpperKnife02() const { return m_B_UpperKnife02; }
    void setB_UpperKnife02(const QString &newVal);

    QString F_LowerKnife01() const { return m_F_LowerKnife01; }
    void setF_LowerKnife01(const QString &newVal);

    QString F_LowerKnife02() const { return m_F_LowerKnife02; }
    void setF_LowerKnife02(const QString &newVal);

    QString B_LowerKnife01() const { return m_B_LowerKnife01; }
    void setB_LowerKnife01(const QString &newVal);

    QString B_LowerKnife02() const { return m_B_LowerKnife02; }
    void setB_LowerKnife02(const QString &newVal);

    QString Roller() const { return m_Roller; }
    void setRoller(const QString &newRoller);

signals:
    void idChanged();
    void NameChanged();
    void Process1Changed();
    void Process2Changed();
    void F_UpperKnife01AssistChanged();
    void F_UpperKnife02AssistChanged();
    void B_UpperKnife01AssistChanged();
    void B_UpperKnife02AssistChanged();
    void F_UpperKnife01Changed();
    void F_UpperKnife02Changed();
    void B_UpperKnife01Changed();
    void B_UpperKnife02Changed();
    void F_LowerKnife01Changed();
    void F_LowerKnife02Changed();
    void B_LowerKnife01Changed();
    void B_LowerKnife02Changed();
    void RollerChanged();

private:
    int m_id = 0;
    QString m_Name;
    QString m_Process1;
    QString m_Process2;
    QString m_F_UpperKnife01Assist;
    QString m_F_UpperKnife02Assist;
    QString m_B_UpperKnife01Assist;
    QString m_B_UpperKnife02Assist;
    QString m_F_UpperKnife01;
    QString m_F_UpperKnife02;
    QString m_B_UpperKnife01;
    QString m_B_UpperKnife02;
    QString m_F_LowerKnife01;
    QString m_F_LowerKnife02;
    QString m_B_LowerKnife01;
    QString m_B_LowerKnife02;
    QString m_Roller;
};

#endif // PARAMETERITEM_H
